home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / txf / src / txfswchk.c < prev   
C/C++ Source or Header  |  1994-09-17  |  6KB  |  319 lines

  1. /*====================================================================
  2.  *
  3.  * TXF switch checker module
  4.  *
  5.  *====================================================================
  6.  *                                   copyright(C) 1992-1994 T.Nakatani
  7.  *====================================================================
  8.  */
  9. #include "txf.h"
  10.  
  11. char *tkl, *tkf, *tkq;
  12. void case_k(char c, char far *str)
  13. {
  14.     if (c == 'f') {
  15.         if (kf != NULL) {
  16.             free(kf);
  17.         }
  18.         kf = ktrans(str);
  19.     }
  20.     if (c == 'l') {
  21.         if (kl != NULL) {
  22.             free(kl);
  23.         }
  24.         kl=ktrans(str);
  25.     }
  26.     if (c =='q') {
  27.         if (kq != NULL) {
  28.             free(kq);
  29.         }
  30.         kq = ktrans(str);
  31.     }
  32.     tkl = kl;
  33.     tkf = kf;
  34.     tkq = kq;
  35. #ifdef DEBUG
  36.     if (viewmode > 5) {
  37.         fprintf(stderr, "SWITH=k%c\n", c);
  38.         fprintf(stderr, "ぶら下げ文字=%s(%Np)\n", kl,kl);
  39.         fprintf(stderr, "送り出し文字=%s(%Np)\n", kf,kf);
  40.         fprintf(stderr, "引用通知文字=%s(%Np)\n", kq,kq);
  41.     }
  42. #endif
  43. }
  44.  
  45. void case_r(char c)
  46. {
  47.     if (c == NUL) {
  48.         retflg = 1;
  49.     }
  50.     else if (c == 'z') {
  51.         removeeofflg = 1;
  52.     }
  53.     else if (c =='b') {
  54.         removebakfile = 1;
  55.     }
  56. }
  57.  
  58. void case_e(char c)
  59. {
  60.     if ((c == 'x') && (*wcfile == NUL)) {
  61.         if (exflg) exchangedriver();
  62.         exflg = 0;
  63.     }
  64. #if 0
  65.     else if (c == 'p') useoldex = 0;
  66.     else if (c == 's') useoldex = 1;
  67. #endif
  68. }
  69.  
  70. int chkoprnd(char next)
  71. {
  72.     if (next == '-') return (0);
  73.     if (next == '@') return (0);
  74.     if (next == NUL) return (0);
  75.     return (1);
  76. }
  77.  
  78. char *nrcpy(char far *fstr)
  79. {
  80.     static char nstr[80];
  81.     far_strcpy(nstr, fstr);
  82.     return (nstr);
  83. }
  84.  
  85. void swlow(int *i, char far **val)
  86. {
  87.     switch(val[*i][1]) {
  88.     case 'i':
  89.         if (val[*i][2] == NUL) {
  90.             if (chkoprnd(val[*i+1][0])) {
  91.                 far_strcpy(inputfile, val[*i+1]);
  92.             }
  93.             else {
  94.                 (*i)--;
  95.             }
  96.         }
  97.         if (val[*i][2] == 'o') {
  98.             far_strcpy(wcfile, val[*i+1]);
  99.         }
  100.         if (val[*i][2] == 's') {
  101.             ishflg = 1;
  102.             (*i)--;
  103.         }
  104.         break;
  105.     case 'c':
  106.         if (chkoprnd(val[*i+1][0])) {
  107.             cent = atoi(nrcpy(val[*i+1]));
  108.         }
  109.         else {
  110.             cent = 60;
  111.             (*i)--;
  112.         }
  113.         break;
  114.     case 'l':
  115.         if (far_strlen(val[*i]) == 2) {
  116.             if (chkoprnd(val[*i+1][0])) {
  117.                 maxc = atoi(nrcpy(val[*i+1]));
  118.             }
  119.             else {
  120.                 (*i)--;
  121.             }
  122.         }
  123.         break;
  124.     case 'b':
  125.         if (chkoprnd(val[*i+1][0])) {
  126.             base = atoi(nrcpy(val[*i+1]));
  127.         }
  128.         else {
  129.             base = 0;
  130.             (*i)--;
  131.         }
  132.         break;
  133.     case 'k':
  134.         case_k(val[*i][2], val[*i+1]);
  135.         break;
  136.     case 'f':
  137.         format = 1;
  138.         if (chkoprnd(val[*i+1][0])) {
  139.             starttxf = atol(nrcpy(val[*i+1]));
  140.         }
  141.         else {
  142.             (*i)--;
  143.         }
  144.         if (chkoprnd(val[*i+2][0])) {
  145.             endtxf = atol(nrcpy(val[*i+2]));
  146.             (*i)++;
  147.         }
  148.         if ((val[*i][2] == 'x') && (*wcfile == NUL)) {
  149.             if (base == 0) setleft0();    /*    自動検索    */
  150.             if (base > 0) setleft();
  151.             txform();
  152.             format = 0;
  153.         }
  154.         break;
  155.     case 'a':
  156.         if (command_option) {
  157.             read_def_flg = 0;
  158.         }
  159.         else {
  160.             init_allswitch();
  161.         }
  162.         (*i)--;
  163.         break;
  164.     case 'd':
  165.         if (val[*i][2] == NUL) {
  166.             if (chkoprnd(val[*i+1][0])) {
  167.                 far_strncpy(tfile[0], val[*i+1], 64);
  168.                 mktfilename();
  169.             }
  170.             else{
  171.                 (*i)--;
  172.             }
  173.         }
  174.         break;
  175.     case 'e':
  176.         if (val[*i][2] == NUL) {
  177.             if (exflg > EX_MAX) errexit("too many exchange block");
  178.             exold[exflg] = &val[*i+1][0];
  179.             if (chkoprnd(val[*i+2][0])) {
  180.                 exnew[exflg] = val[*i+2];
  181.                 (*i)++;
  182.             }
  183.             exflg += 1;
  184.         }
  185.         else {
  186.             case_e(val[*i][2]);
  187.             (*i)--;
  188.         }
  189.         break;
  190.     case '?':
  191.     case 'h':
  192.         credit(basedir);
  193.     default:
  194.         fprintf(stderr, "Error:invailed parameter'%s'\n", val[*i]);
  195.         credit(basedir);
  196.         /* exit(1); */
  197.     }
  198. }
  199. void swhigh(int *i, char far **val)
  200. {
  201.     switch(val[*i][1]) {
  202.     case 'o':
  203.         if (chkoprnd(val[*i+1][0])) {
  204.             far_strcpy(outputfile, val[*i+1]);
  205.         }
  206.         else {
  207.             (*i)--;
  208.         }
  209.         break;
  210.     case 'm':
  211.         if ((val[*i][2] == 'r') && chkoprnd(val[*i+1][0])) {
  212.             right = atoi(nrcpy(val[*i+1]));
  213.         }
  214.         else if ((val[*i][2] == 'l') && chkoprnd(val[*i+1][0])) {
  215.             left = atoi(nrcpy(val[*i+1]));
  216.         }
  217.         else {
  218.             (*i)--;
  219.         }
  220.         break;
  221.     case 's':
  222.         sep = val[*i+1][0];
  223.         break;
  224.     case 't':
  225.         if (chkoprnd(val[*i+1][0])) {
  226.             tabsize = atoi(nrcpy(val[*i+1]));
  227.         }
  228.         else {
  229.             (*i)--;
  230.         }
  231.         break;
  232.     case 'v':
  233.         viewmode = 1;
  234.         if (val[*i][2] != NUL) {
  235.             viewmode = atoi(nrcpy(&val[*i][2]));
  236.             (*i)--;
  237.         }
  238.         else {
  239.             if (chkoprnd(val[*i+1][0])) {
  240.                 viewmode = atoi(nrcpy(val[*i+1]));
  241.             }
  242.             else {
  243.                 (*i)--;
  244.             }
  245.         }
  246.         break;
  247.     case 'r':
  248.         case_r(val[*i][2]);
  249.         (*i)--;
  250.         break;
  251.     case 'n':
  252.         if (val[*i][2] == NUL) {
  253.             format = 0;
  254.             (*i)--;
  255.         }
  256.         break;
  257.     case 'x':
  258.         tabx = 1;
  259.         (*i)--;
  260.         break;
  261.     case 'q':
  262.         quoteflg = 1;
  263.         (*i)--;
  264.         break;
  265.     case 'p':
  266.         setline = 2;
  267.         (*i)--;
  268.         break;
  269.     default:
  270.         fprintf(stderr, "Error:invailed parameter'%Fs'\n", val[*i]);
  271.         credit(basedir);
  272.         /* exit(1); */
  273.     }
  274. }
  275.  
  276. void swchk(int count, char far **val)
  277. {
  278.     int i;
  279.     char *env;
  280.  
  281.     if ((env = getenv("TXF")) != NULL) {
  282.         if (strcmp(env,"TEST") == 0) {
  283.             for (i = 0; i < count; i++) {
  284.                 fprintf(stderr, "Info:PARA[%d]=<%s>\n", i, nrcpy(*(val+i)));
  285.             }
  286.             fprintf(stderr, "Info:max=%d\n", count);
  287.         }
  288.     }
  289.  
  290.     for (i = 0; val[i] != NULL; i++) {
  291.         if (val[i][0] == '-') {
  292.             val[i][1] = tolower(val[i][1]);
  293.             val[i][2] = tolower(val[i][2]);
  294. #ifdef DEBUG
  295.             if (viewmode > 2) {
  296.                 fprintf(stderr, "Info:PARA=<%s>\n", nrcpy(&(val[i][0])));
  297.             }
  298. #endif
  299.             if (val[i][1] <= 'l') {
  300.                 swlow(&i, val);
  301.             }
  302.             else {
  303.                 swhigh(&i, val);
  304.             }
  305.  
  306.             i++;
  307.         }
  308.         else if (val[i][0] == '@') {
  309.             read_commandfile(nrcpy(&val[i][1]), 1);
  310.         }
  311.         else if (*inputfile == NUL) {
  312.             far_strcpy(inputfile, val[i]);
  313.         }
  314.     }
  315.     kl=tkl;
  316.     kf=tkf;
  317.     kq=tkq;
  318. }
  319.